﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace YanShu.Entity
{
    public class ProxyMessage : Object
    {

        /** 心跳消息 */
        public const byte TYPE_HEARTBEAT = 0x07;

        /** 认证消息，检测clientKey是否正确 */
        public const byte C_TYPE_AUTH = 0x01;

        // /** 保活确认消息 */
        // public static final byte TYPE_ACK = 0x02;

        /** 代理后端服务器建立连接消息 */
        public const  byte TYPE_CONNECT = 0x03;

        /** 代理后端服务器断开连接消息 */
        public const byte TYPE_DISCONNECT = 0x04;

        /** 代理数据传输 */
        public const byte P_TYPE_TRANSFER = 0x05;

        /** 用户与代理服务器以及代理客户端与真实服务器连接是否可写状态同步 */
        public const byte C_TYPE_WRITE_CONTROL = 0x06;

        /** 用户与代理服务器以及代理客户端与真实服务器连接是否可写状态同步 */
        public const byte C_TYPE_OPEN = 0x02;

        /** 注册 */
        public const byte TYPE_SIGNUP = 0x08;

        /** 登录 */
        public const byte TYPE_RESET_PASSWORD = 0x09;

        /** token认证 */
        public const byte C_TYPE_TOKEN_AUTH = 0xa;

        /** 验证码 */
        public const byte TYPE_VERIFY_CODE = 0xb;

        /** 消息类型 */
        private byte type;

        /** 消息流水号 */
        private long serialNumber;

        /** 消息命令请求信息 */
        private String uri;

        /** 消息传输数据 */
        private byte[] data;

        public void SetUri(String uri)
        {
            this.uri = uri;
        }

        public String GetUri()
        {
            return uri;
        }

        public byte[] GetData()
        {
            return data;
        }

        public void SetData(byte[] data)
        {
            this.data = data;
        }

        public new byte GetType()
        {
            return type;
        }

        public void SetType(byte type)
        {
            this.type = type;
        }

        public long GetSerialNumber()
        {
            return serialNumber;
        }

        public void SetSerialNumber(long serialNumber)
        {
            this.serialNumber = serialNumber;
        }

        public override string ToString()
        {
            return "ProxyMessage [type=" + type + ", serialNumber=" + serialNumber + ", uri=" + uri + ", data="+Encoding.UTF8.GetString(data)+"]";
        }


    }
}
